package speed2010.util;

import speed2010.middleware.comunicacao.Address;

public class EntradaPDInfo {
	private Address address = null;
	private long capacidadeComputacionalUtilizada = -1L;
	private long capacidadeComputacionalTotal = -1L;
	private long timestamp = -1;
	private SpeedLocalOntology speedLocalOntology = null;

	public EntradaPDInfo(Address nodeAddress, long cargaUsada,
			long capacidadeTotalDeCarga, SpeedLocalOntology slo) {
		this.address = nodeAddress;
		this.capacidadeComputacionalUtilizada = cargaUsada;
		this.capacidadeComputacionalTotal = capacidadeTotalDeCarga;
		this.speedLocalOntology = slo;
		this.timestamp = System.currentTimeMillis();
	}

	public long getTimestamp() {
		return timestamp;
	}

	public Address getAddress() {
		return address;
	}

	public void setNodeId(Address nodeAddress) {
		this.address = nodeAddress;
	}

	public long getCapacidadeComputacionalUtilizada() {
		return capacidadeComputacionalUtilizada;
	}

	public long getCapacidadeComputacionalTotal() {
		return capacidadeComputacionalTotal;
	}

	public long getCapacidadeComputacionalDisponivel() {
		return capacidadeComputacionalTotal - capacidadeComputacionalUtilizada;
	}

	public void setCapacidadeComputacionalTotal(long capacidadeTotal) {
		this.capacidadeComputacionalTotal = capacidadeTotal;
	}

	public void setCapacidadeComputacionalUtilizada(long capacidadeUtilizada) {
		this.capacidadeComputacionalUtilizada = capacidadeUtilizada;
	}

	@Override
	public String toString() {
		return this.address.toStringReduzido() + "; ccUtilizada: "
				+ this.capacidadeComputacionalUtilizada + "; ccTotal: "
				+ this.capacidadeComputacionalTotal + "; Ontologia: "
				+ this.speedLocalOntology.location;
	}

	public void setSpeedLocalOntology(SpeedLocalOntology slo) {
		this.speedLocalOntology = slo;
	}

	public SpeedLocalOntology getSpeedLocalOntology() {
		return speedLocalOntology;
	}

	public float getIndiceDeCarga() {
		return Util.getIndiceUtilizacao(this.capacidadeComputacionalUtilizada,
				this.capacidadeComputacionalTotal);
	}

}